﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建 Queue 类的实例，模拟今天作业还剩什么
            Queue queue = new Queue();
            queue.Enqueue("语文");
            queue.Enqueue("数学");
            queue.Enqueue("英语");
            queue.Enqueue("专业");
            while (queue.Count > 0)     //当包含元素个数小于等于0时结束
            {
                Console.WriteLine(queue.Dequeue()); //输出元素，并且移除

            }
            //向 Queue 类的实例中添加 5个值，在不移除队列中元素的前提下将队列中的元素依次输出。
            Queue queue2 = new Queue();
            queue2.Enqueue("《资治通鉴》");
            queue2.Enqueue("《九章算术》");
            queue2.Enqueue("《世说新语》");
            queue2.Enqueue("《梦溪笔谈》");
            queue2.Enqueue("《兰亭集序》");

            object[] NewQueue2 = queue2.ToArray();  //定义一个obj数组接收集合新的复制
            foreach (var item in NewQueue2)
            {
                Console.WriteLine(item);    //循环数组输出
            }

            //使用 GetEnumerator() 方法来遍历
            Queue queue3 = new Queue();
            queue3.Enqueue("开罗会议");
            queue3.Enqueue("慕尼黑会议");
            queue3.Enqueue("德黑兰会议");
            queue3.Enqueue("雅尔塔会议");
            queue3.Enqueue("波茨坦会议");

            IEnumerator enumer = queue3.GetEnumerator();    //定义接口返回枚举数
            while (enumer.MoveNext())   //如果能进行下一个枚举返回true，到结尾返回false
            {
                Console.WriteLine(enumer.Current);//输出枚举当前位置的元素
            }

            Console.ReadKey();
        }
    }
}
